\section{Introdução}
\label{sec:intro}

Durante a primeira fase da elaboração do projeto {\it webscan}, foram realizadas as seguintes atividades:

\begin{description}
    \item[Casos de uso: ] Nessa atividade, descrita na seção \ref{sec:casos_de_uso}, foram elaborados diagramas de casos de uso, representando as principais interações entre atores e o sistema. Também foram elaborados os casos de uso completo-abstrato, de forma a dar detalhamento a cada caso de uso contido no diagrama;
    \item[Modelagem de dados: ] A modelagem de dados do projeto foi realizada para dar uma visão geral dos dados que serão tratados e como eles se relacionam. A seção \ref{sec:modelo_de_dados} apresenta o resultado obtido desse trabalho realizado. 
    \item[Interface: ] Para essa atividade, descrita com mais detalhes na seção \ref{sec:mockups}, foram elaboradas as candidatas às telas de interface do sistema ({\it mockups}) e também o curso de ações que um usuário pode realizar ({\it storyboards});
    \item[Elaboração dos {\it Web Services}: ] Essa atividade consistiu na
        espeficação dos métodos que compoem a interface de comunicação da
        aplicação com outros sistemas. Toda a especificação está disponível
        na seção \ref{sec:web_services}. 
    \item[Pesquisa de bibliotecas: ] Essa atividade (apresentada nas seções \ref{sec:pesquisa_libs} e \ref{sec:pesquisa_ocr}) consistiu na realização de uma pesquisa sobre as bibliotecas de digitalização e de reconhecimento de textos respectivamente.

\end{description}

\subsection{Terminologia}

\subsubsection{Atividade de Desenvolvimento}
Atividade de desenvolvimento se refere à quantidade de escritas (ou seja, código sendo atualizado/adicionado) em um sistema de controle de versões, quando disponível.

\begin{description}
    \item[Alta:] diversas atividades no último mês.
    \item[Baixa:] algumas atividades ao longo dos últimos 3 meses.
    \item[Parado:] não houve nenhuma atividade de escrita nos últimos 6 meses.
\end{description}

\subsubsection{OCR - Optical Character Recognition}

O OCR (Optical Character Recognition), ou Reconhecimento Óptico de Caracteres, 
é a tecnologia responsável pela obtenção de texto a partir de uma imagem. Durante
este projeto a tecnologia será empregada para gerar documentos indexáveis\footnote{Documentos indexáveis: Que
podem ser encontrados pelo sistema de busca}.

\subsubsection{JSON}
Algumas vezes é necessário que uma pequena informação seja transmitida entre aplicações, e o formato XML acaba
burocratizando demasiadamente este processo. Outro cenário é o de múltiplas requisições em um curto espaço de
tempo, que leva o cliente e o servidor a uma sobrecarga para executar o \emph{parser}, além de um uso de
excessivo da banda para a transmissão dos dados.

A padronização de um formato Javascript para a transfêrencia de dados poderia ser uma alternativa para
solucionar estes problemas, e foi por isso que no ano de 2002, \emph{Douglas Crockford}, engenheiro da
\emph{Yahoo! Inc.} propôs o formato JSON.

O principal objetivo era criar um padrão para troca de dados utilizando código Javascript, ou seja, em forma
textual, gerando o mínimo de texto possível, o que tornaria o formato leve e ao mesmo tempo fácil de ser
interpretado pelo navegador. Para isso algumas assertivas foram seguidas:

\begin{itemize}
    \item Não poderia ser uma linguagem de marcação;
    \item Não seria um formato de documento;
    \item Não permitiria a representação de funções;
    \item Não permitiria a representação de estruturas cíclicas.
\end{itemize}

No ano de 2006 o formato foi oficializado pelo \emph{Network Working Group} e apresentado oficialmente à
comunidade durante a conferencia \textbf{XML 2006}.

O padrão apresentado é basicamente composto de um objeto (Figura \ref{fig:json_obj}) que possui uma \emph{string}
descritiva e o seu valor, que pode assumir os formatos:

\begin{itemize}
    \item \emph{String}
    \item Número
    \item Vetor
    \item Objeto
    \item true, false e null
\end{itemize}

\begin{figure}[ht]
\begin{center}
\scalebox{0.6} {
    \includegraphics{img/json_obj.png}}
\end{center}
  \caption{Objeto JSON}
  \label{fig:json_obj}
\end{figure}

As definições detalhadas de cada um dos tipos e exemplos de código podem ser encontrados no site
http://www.json.org/.

\subsubsection{Web Services}

A W3C \footnote{http://www.w3c.org/} define \emph{web services} como um padrão que provê a
interoperabilidade entre duas aplicações de software, rodando sob diferentes plataformas e/ou
\emph{frameworks}.
A interoperabilidade fornecida pelos \emph{web services} é disponibilizada por meio de funções
ou mesmo objetos na web, de forma que estes possam ser chamados através de um \emph{HTTP
request} e sua resposta retornada através de um \emph{HTTP response}.
Para que uma aplicação consiga se comunicar com a outra, é necessário que ela conheça
e entenda o formato de entrada e saída de dados; para isso, é de costume que seja utilizado XML ou JSON.
Outro problema é que a aplicação deve saber qual o tipo de dados de um determinado
valor que chega a ela, e como ela implementa este valor. Este problema pode ser resolvido
de formas distintas; uma delas é a especificação trazer as informações necessárias; a outra
é o uso de um arquivo que traz esse tipo de informação, de tal forma que a aplicação
apenas leia este arquivo e faça as conversões necessárias. 

